package com.ycw.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.ycw.dao.ContractDao;
import com.ycw.pojo.Contract;
import com.ycw.pojo.pageIndex;
import com.ycw.util.MyBatisUtil;

public class ContractDaoImpl implements ContractDao {
	MyBatisUtil myBatisUtil = new MyBatisUtil();
	SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
	SqlSession sqlSession = sqlSessionFactory.openSession();

	@Override
	public int contractGetPage() {
		int sum = sqlSession.getMapper(ContractDao.class).contractGetPage();
		return sum;
	}

	// 所有合同的显示 分页
	@Override
	public List<Contract> contractGetAll(pageIndex pageIndex) {
		int sum = contractGetPage();
		System.out.println("sum:" + sum);

		List<Contract> lists = sqlSession.getMapper(ContractDao.class).contractGetAll(pageIndex);

		sqlSession.close();
		return lists;

	}

	// 根据c_id查询
	@Override
	public Contract getAllByScno(Contract contract) {
		Contract contract2 = sqlSession.getMapper(ContractDao.class).getAllByScno(contract);

		sqlSession.close();
		return contract2;

	}

	// 删除租赁合同信息
	@Override
	public int contractDelete(Contract contract) {

		int i = 0;
		try {
			i = sqlSession.getMapper(ContractDao.class).contractDelete(contract);
			sqlSession.commit();
		} catch (Exception e) {
			sqlSession.rollback();
			e.printStackTrace();
		} finally {
			sqlSession.close();
		}

		return i;

	}

	// 修改合同信息
	@Override
	public int contractUpdate(Contract contract) {
		int i = 0;
		try {
			i = sqlSession.getMapper(ContractDao.class).contractUpdate(contract);
			sqlSession.commit();
		} catch (Exception e) {
			sqlSession.rollback();
			e.printStackTrace();
		} finally {
			sqlSession.close();
		}
		return i;
	}

	// 添加合同信息
	@Override
	public int contractAdd(Contract contract) {
		System.out.println("添加：" + contract.toString());
		return 0;

	}

	// 根据所属地区，所属小区，楼栋号，房间号查询h_id
	@Override
	public int getHid(String h_region, String h_village, String h_unit, String h_roomnum) {
		int i = 0;
		// try {
		// conn = this.util.getConn();
		// String sql = "select h_id from house where h_region=? and h_village=?
		// and h_unit=? and h_roomnum=?";
		// ps = conn.prepareStatement(sql);
		// ps.setString(1, h_region);
		// ps.setString(2, h_village);
		// ps.setString(3, h_unit);
		// ps.setString(4, h_roomnum);
		// res = ps.executeQuery();
		// if (res.next()) {
		// i = res.getInt("h_id");
		// } else {
		// i = 0;
		// }
		// } catch (SQLException e) {
		// e.printStackTrace();
		// } catch (Exception e) {
		// e.printStackTrace();
		// } finally {
		// try {
		// util.closeConn();
		// } catch (Exception e2) {
		// // TODO: handle exception
		// }
		// }
		return i;
	}

	// 按签署人姓名、合同状态、合同期数查询合同信息
	@Override
	public Map<String, Object> contractSelect(String c_signer, String c_state, String c_count, int page) {
		Map<String, Object> resMap = new HashMap<>();
		int pageSize = 10;
		return null;
		// try {
		// int sum = checkCount(c_signer, c_state, c_count, page);
		// // 三元表达式计算总页数
		// int pages = sum % pageSize == 0 ? sum / pageSize : sum / pageSize +
		// 1;
		// conn = this.util.getConn();
		// List<Object> list = new ArrayList<>();
		// StringBuffer sql = new StringBuffer("select * from contract where
		// 1=1");
		// if (c_signer != "") {
		// sql.append(" and c_signer=?");
		// list.add(c_signer);
		// }
		// if (c_state != "") {
		// sql.append(" and c_state=?");
		// list.add(c_state);
		// }
		// if (c_count != "") {
		// sql.append(" and c_count=?");
		// list.add(c_count);
		// }
		// sql.append(" limit ?,10");
		// int begin = (page - 1) * pageSize;
		// list.add(begin);
		// String sql1 = sql.toString();
		// ps = conn.prepareStatement(sql1);
		// for (int i = 0; i < list.size(); i++) {
		// ps.setObject(i + 1, list.get(i));
		// }
		// // ps.setInt(1, begin);
		// res = ps.executeQuery();
		// while (res.next()) {
		// Map<String, Object> map = new HashMap<>();
		//
		// map.put("c_id", res.getInt("c_id"));
		// map.put("c_num", res.getString("c_num"));
		// map.put("c_begintime", res.getString("c_begintime"));
		// map.put("c_endtime", res.getString("c_endtime"));
		// map.put("c_mode", res.getString("c_mode"));
		// map.put("c_count", res.getString("c_count"));
		// map.put("sum", sum);
		// map.put("pages", pages);
		// Integer i = res.getInt("c_id");
		// resMap.put(i.toString(), map);
		// }
		// this.util.closeConn();
		// } catch (SQLException e) {
		// e.printStackTrace();
		// } catch (Exception e) {
		// e.printStackTrace();
		// }
		// return resMap;

	}

	// 按签署人姓名、合同状态、合同期数获得合同总条数
	public int checkCount(String c_signer, String c_state, String c_count, int page) {
		int count = 0;
		// try {
		// conn = this.util.getConn();
		// List<Object> list = new ArrayList<>();
		// StringBuffer sql = new StringBuffer("select count(c_id) from contract
		// where 1=1");
		// if (c_signer != "") {
		// sql.append(" and c_signer=?");
		// list.add(c_signer);
		// }
		// if (c_state != "") {
		// sql.append(" and c_state=?");
		// list.add(c_state);
		// }
		// if (c_count != "") {
		// sql.append(" and c_count=?");
		// list.add(c_count);
		// }
		// String sql1 = sql.toString();
		// ps = conn.prepareStatement(sql1);
		// for (int i = 0; i < list.size(); i++) {
		// ps.setObject(i + 1, list.get(i));
		// }
		// res = ps.executeQuery();
		// while (res.next()) {
		// count = res.getInt("count(c_id)");
		// }
		// } catch (SQLException e) {
		// e.printStackTrace();
		// } catch (Exception e) {
		// e.printStackTrace();
		// }
		return count;

	}

}
